Kaggle コードコンペ依存の管理
前提
コードを uv で管理している
学習・推論時に使い回すコードをパッケージとして実装している
自分のコードのビルドと依存の書き出し
uv build --wheel で書き出す
uv pip compile pyproject.toml -o dist/requirements.txt にプロジェクトの依存を書き出す
deps Notebook に保存
依存する wheel を /kaggle/working 以下に入れて Output として保存した Notebook を作る
GCS の dist/ 以下を Notebook にダウンロード pip download -r /kaggle/working/requirements.txt -d /kaggle/working/wheels
あってもなくてもオプション、実行環境と python バージョンが異なるなら指定してもいいかも
--platform=manylinux2014_x86_64
--pyton-version=311
--implementation cp
--abi=cp311
インストール
deps Notebook を提出用 Notebook にアタッチ
!pip install /kaggle/input/SLUG_DEPS_NOTEBOOK/wheels/*.whl --force-reinstall --no-deps --no-index --find-links=/kaggle/working --root-user-action=ignore
!pip install /kaggle/input/SLUG_DEPS_NOTEBOOK/mypackag-0.1.0 --no-deps --no-index --find-links=/kaggle/working/wheels
別案: UV_CACHE_DIR ごと保存した Notebook を作る
%env UV_CACHE_DIR=/kaggle/working/.cache/uv しておいて
リポジトリごと clone して uv sync --quiet しておく
wheel より細かいファイルが多いせいか遅い? 気のせい?
uv そのまま使えるのは便利
kaggle の uv のバージョンは古め、0.6 台
uv self update しておかないと tool.uv.extra-build-dependencies とか使って flash-attn 入れたりしてるとうまく動かない